home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Software 2000
/
Software 2000 Volume 1 (Disc 1 of 2).iso
/
utilities
/
u397.dms
/
in.adf
/
Forms.AMOS
/
Forms.amosSourceCode
< prev
Encoding:
Amiga
Atari
Commodore
DOS
FM Towns/JPY
Macintosh
Macintosh JP
Macintosh to JP
NeXTSTEP
RISC OS/Acorn
Shift JIS
UTF-8
Wrap
AMOS Source Code
|
1990-10-01
|
33.4 KB
|
1,091 lines
' ****************************************
' ** FORMS REALLY UNLIMITED **
' ** ---------------------- **
' ** (c) A.H.Meek 1990 **
' ** ------------- **
' ****************************************
'
Set Buffer 40
'
VERSION$="Ver:1.04" : Rem ------------------------ Latest date 27/09/90
'
'------------------ Version History ------------------------------------
' 1.00 Initial Appraisal Sample
' 1.01 Box Drawing Procedures implemented correctly to overlap
' 1.02 Line Insertion and Deletion with Undo facility added
' 1.03 Colour Changes to suit Introduction Screen - 2nd Sample
' 1.04 Printing Procedures corrected - Sent to P.D. 3rd Sample
'------------------------------------------------------------------------
'
Screen Open 1,640,264,8,Hires
Screen Display 1,128,38,446,256
Palette $0,$44,$FFC,FF0,$F0F,$BA7,$600,$F00
'
Global VERSION$,LINE$,SLINE$,XPOS,YPOS,SPOS,UPPER_LIMIT,CHANGE_FLAG
Global ALT$,TLC$,TRC$,BLC$,BRC$,SCR_LIMIT,SCR_WIDTH
Global FILENAME$,TEMP_NAME$,CX1,CX2,CY1,CY2,GX1,GX2,GY1,GY2
'
FILENAME$="noname"
UPPER_LIMIT=50
SCR_LIMIT=30
SCR_WIDTH=80
LINE$=Space$(UPPER_LIMIT*SCR_WIDTH)
CHANGE_FLAG=0
Cls
Limit Mouse 128,38 To 446,286
'
Curs Off
Reserve Zone 20
Set Dir 30,".info/*.info/*.*.info/*.bak/*.*.bak/*.abk/*.*.abk"
'
INIT_MENU
Menu On : On Menu On
On Menu Proc CH_OPT,CH_FLE,CH_INP,CH_PRT
On Menu On : Show On
'
'
INIT_PARAMS
INIT_LINE_ENDS
'
XPOS=0 : YPOS=0 : SPOS=0
'
Def Scroll 1,0,0 To 640,240,0,8
Def Scroll 2,0,0 To 640,248,0,-8
'
'************************************************ MAIN PROGRAM LOOP
Do
XPOS=X Curs
YPOS=Y Curs
Locate XPOS,YPOS
K$=""
Clear Key
While K$=""
Inverse On
CHARACTER_PRINT
GIVE_LINE_STATUS
MP=Mouse Key
If MP=1 Then POSITION_WITH_MOUSE
If Key Shift=8 Then ALT_LINES
K$=Inkey$ : If K$<>"" Then K=Asc(K$)
If K=8 Then DELETE_CHARACTER
If K=13 Then NEWLINE
If K=30 Then POSITION_WITH_UP_ARROW
If K=31 Then POSITION_WITH_DN_ARROW
If K=28 Then POSITION_WITH_RT_ARROW
If K=29 Then POSITION_WITH_LT_ARROW
If(K>31 and K<192) Then CHR_INP[K$]
K=0 : K$=""
Menu On : On Menu On
Wend
Loop
'
Edit
'************************************************ WARNING PROCEDURES
Procedure QUERY[A$,B$,C$,D$]
Inverse Off
Screen 1 : Wind Save : Wind Open 3,40,50,70,8,1 : Wind Save
Curs Off : Border 2,5,7 : Pen 6 : Paper 5 : Clw
C$=Zone$(Border$(C$,2),1) : D$=Zone$(Border$(D$,2),2)
Print : Print : Centre A$ : Print : Print : Centre B$
ANSW=0
Repeat
ANSW=Mouse Zone
If ANSW=1
Inverse On : Locate 5,2 : Print C$
Else
Inverse Off : Locate 5,2 : Print C$
End If
If ANSW=2
Inverse On : Locate 73-Len(D$),2 : Print D$
Else
Inverse Off : Locate 73-Len(D$),2 : Print D$
End If
Until Mouse Key
Wind Close
End Proc[ANSW]
Procedure CONFIRM_QUERY[A$,B$,C$,D$]
Inverse Off
Screen 1 : Wind Save : Wind Open 4,150,10,44,10,1 : Wind Save
Curs Off : Border 2,5,7 : Pen 6 : Paper 5 : Clw
A$=Zone$(Border$(A$,2),3) : B$=Zone$(Border$(B$,2),4)
C$=Zone$(Border$(C$,2),5)
Print : Centre D$ : ANSW=0
Repeat
ANSW=Mouse Zone
If ANSW=3
Inverse On : Locate 4,5 : Print A$
Else
Inverse Off : Locate 4,5 : Print A$
End If
If ANSW=4
Inverse On : Centre B$
Else
Inverse Off : Centre B$
End If
If ANSW=5
Inverse On : Locate 51-Len(C$),5 : Print C$
Else
Inverse Off : Locate 51-Len(C$),5 : Print C$
End If
Until Mouse Key
Wind Close
End Proc[ANSW-2]
Procedure ALERT[A$,B$,C$,NOISY]
Screen 1 : Inverse Off : D$="<<< Press Mouse Key to Continue >>>"
Wind Save : Wind Open 2,0,190,78,8,1 : Wind Save
Curs Off : Border 2,6-NOISY,0 : Pen 0 : Paper 6-NOISY : Clw
Print : Centre A$ : Print : Centre B$ : Print
Centre C$ : Print : Print : Pen 3 : Centre D$
If NOISY : For Z=0 To 3 : Shoot : Wait 5 : Shoot : Next Z : End If
While Mouse Key : Wend
Repeat : Until Mouse Key
Wind Close
End Proc
Procedure INFO_ON[A$,B$]
Inverse Off
Screen 1 : Wind Save : Wind Open 5,120,30,50,8,1 : Wind Save
Curs Off : Border 2,2,1 : Pen 6 : Paper 2 : Clw
Print : Centre A$ : Print : Print : Centre B$
End Proc
Procedure INFO_OFF
Window 5 : Wind Close
End Proc
'************************************************ OPENING PROCEDURES
Procedure INIT_LINE_ENDS
TLC$="" : TRC$="" : BLC$="" : BRC$=""
For Z=1 To 15 : Read X : TLC$=TLC$+Chr$(X) : Next Z
For Z=1 To 15 : Read X : TRC$=TRC$+Chr$(X) : Next Z
For Z=1 To 15 : Read X : BLC$=BLC$+Chr$(X) : Next Z
For Z=1 To 15 : Read X : BRC$=BRC$+Chr$(X) : Next Z
Data 144,136,144,136,144,136,144,142,146,142,146,142,146,142,146
Data 145,142,146,138,145,142,146,138,145,142,146,138,145,142,146
Data 140,140,140,144,144,144,144,143,143,143,143,146,146,146,146
Data 141,143,143,145,145,146,146,141,141,143,143,145,145,146,146
End Proc
Procedure INIT_MENU
Menu$(1)=" Options "
Menu$(1,1)=" New Form - F1 ","(IN 1,7 : IN 2,5) ARE YOU SURE !! "
Menu$(1,2)=" About F.R.U ","(IN 1,2 : IN 2,6) ITS COPYRIGHTED "
Menu$(1,3)=" Q U I T - Esc ","(IN 1,2 : IN 2,7) Press Esc Key "
Menu$(2)=" Files "
Menu$(2,1)=" Load Form - F2 "
Menu$(2,2)=" Save Form - F3 "
Menu$(2,3)=" Save As - F4 "
Menu$(2,4)=" Make Sub-Direc. ","(IN 1,2 : IN 2,6) or New Folder "
Menu$(2,5)=" Disc Directory "
Menu$(2,6)=" Kill Files ","(IN 1,3 : IN 2,7) NOT RECOVERABLE "
Menu$(2,7)=" Rename a File "
Menu$(3)=" Edit "
Menu$(3,1)=" Draw Box - F5 "
Menu$(3,2)=" Draw Line - F6 "
Menu$(3,3)=" Clear Area - F7 "
Menu$(3,4)=" Justify - F8 "
Menu$(3,5)=" Adj Length - F9 "
Menu$(4)=" Printer "
Menu$(4,1)=" Print Form - F10 "
Menu$(4,2)=" Change Parameters ","(IN 1,2 : IN 2,6)and Printer Setting"
Menu Key(1,1) To 80
Menu Key(1,3) To 69
Menu Key(2,1) To 81
Menu Key(2,2) To 82
Menu Key(2,3) To 83
Menu Key(3,1) To 84
Menu Key(3,2) To 85
Menu Key(3,3) To 86
Menu Key(3,4) To 87
Menu Key(3,5) To 88
Menu Key(4,1) To 89
End Proc
Procedure INIT_PARAMS
Dim PRT$(10)
If Not Exist(":Param.fle") Then Pop Proc
Open In 1,":Param.fle"
VAR=0
While Not Eof(1)
Input #1,PRT$(VAR)
Inc VAR
Wend
Close 1
Dir$=PRT$(0)+PRT$(1)
End Proc
'************************************************ POSITION PROCEDURES
Procedure REDO_PARAMETERS
Screen 1 : Wind Save : Wind Open 1,120,10,50,16,1 : Wind Save
Curs Off : Border 2,5,7 : Pen 6 : Paper 5 : Clw
A$="FORMS REALLY UNLIMITED - "+VERSION$ : B$=String$("=",Len(A$))
Print : Centre A$ : Print : Centre B$ : Print
C$="File Name :- "+FILENAME$ : D$=String$("-",Len(C$))
Print : Centre C$ : Print : Centre D$
Locate 3,7 : Print "Form Length Currently:";UPPER_LIMIT
WRONG:
Put Key "50"
Locate 9,10 : Input "New Form Length: ";NEW_LIMIT$
If NEW_LIMIT$="" : Goto OK_LIMIT : End If
NEW_LIMIT=Val(NEW_LIMIT$)
If(NEW_LIMIT<31 or NEW_LIMIT>450)
ALERT["Minimum Limit for FORM LENGTH = 31 Lines","","Maximum Limit for FORM LENGTH = 450 Lines",-1]
Goto WRONG
End If
If NEW_LIMIT>UPPER_LIMIT
LINE$=LINE$+Space$((NEW_LIMIT-UPPER_LIMIT+1)*SCR_WIDTH)
End If
UPPER_LIMIT=NEW_LIMIT
OK_LIMIT:
Wind Close : Locate 0,0 : On Menu On
End Proc
Procedure GIVE_LINE_STATUS
Inverse On
Locate 0,31
Print " Line:"+Right$(" "+Str$(YPOS+SPOS+1),3);
Print " Col:"+Right$(Str$(XPOS+1),2);
Print " Caps Lock: ";
If(Key Shift and 4)=4 : Print "ON "; : Else Print "OFF"; : End If
Print " Edit: ";FILENAME$;Space$(34);
Inverse Off
End Proc
Procedure DELETE_CHARACTER
Locate XPOS,YPOS
A=Asc(Mid$(LINE$,(YPOS+SPOS)*SCR_WIDTH+XPOS,1))
If(A>135 and A<147) : Bell : Pop Proc : End If
Mid$(LINE$,(YPOS+SPOS)*SCR_WIDTH+XPOS,1)=" "
Inverse Off
Print Mid$(LINE$,(YPOS+SPOS)*SCR_WIDTH+XPOS+1,1);
Dec XPOS
If XPOS<0 : XPOS=0 : Bell : End If
Locate XPOS,YPOS
End Proc
Procedure YPOS_LTEST
If YPOS>SCR_LIMIT
YPOS=SCR_LIMIT
Inc SPOS
If SPOS>UPPER_LIMIT-SCR_LIMIT-1
SPOS=UPPER_LIMIT-SCR_LIMIT-1
Bell
Else
Scroll 2
BASE_LINE_PRINT
End If
End If
Locate XPOS,YPOS
End Proc
Procedure NEWLINE
Locate XPOS,YPOS
If YPOS+SPOS+1=UPPER_LIMIT : Bell : Pop Proc : End If
A=Asc(Mid$(LINE$,(YPOS+SPOS+1)*SCR_WIDTH+XPOS+1,1))
B=Asc(Mid$(LINE$,(YPOS+SPOS+1)*SCR_WIDTH+XPOS,1))
If(A=139 and B<>137) or B=141 : Goto CONT : End If
If(A>135 and A<147) : Bell : Pop Proc : End If
CONT:
Inverse Off
CHARACTER_PRINT
Inc YPOS : YPOS_LTEST
For Z=0 To 80
Exit If Mid$(LINE$,(YPOS+SPOS)*SCR_WIDTH+XPOS,1)=Chr$(139),1
Dec XPOS : If XPOS<0 : XPOS=0 : Bell : Z=80 : End If
Next Z
Locate XPOS,YPOS
End Proc
Procedure ALT_LINES
K$=Inkey$
If Lower$(K$)="i" Then Goto ALT_INSERT
If Lower$(K$)="u" Then Goto ALT_UNDOIT
If Lower$(K$)="y" Then Goto ALT_DELETE
Clear Key : Pop Proc
ALT_INSERT:
If UPPER_LIMIT=450 : Bell : Pop Proc : End If
Inc UPPER_LIMIT
Mid$(LINE$,UPPER_LIMIT*SCR_WIDTH+1,160)=Space$(160)
For Z=UPPER_LIMIT To YPOS+SPOS+1 Step -1
Mid$(LINE$,Z*SCR_WIDTH+1,SCR_WIDTH)=Mid$(LINE$,(Z-1)*SCR_WIDTH+1,SCR_WIDTH)
Next Z
Mid$(LINE$,(YPOS+SPOS)*SCR_WIDTH+1,SCR_WIDTH)=Space$(80)
Memorize X : Memorize Y : Locate 0,YPOS
For Z=YPOS To 30
Print Mid$(LINE$,(Z+SPOS)*SCR_WIDTH+1,SCR_WIDTH);
Next Z
Remember X : Remember Y : CHARACTER_PRINT
Pop Proc
ALT_UNDOIT:
If Len(ALT$)=0 : Pop Proc : End If
For Z=UPPER_LIMIT To YPOS+SPOS+1 Step -1
Mid$(LINE$,Z*SCR_WIDTH+1,SCR_WIDTH)=Mid$(LINE$,(Z-1)*SCR_WIDTH+1,SCR_WIDTH)
Next Z
Mid$(LINE$,(YPOS+SPOS)*SCR_WIDTH+1,SCR_WIDTH)=ALT$ : ALT$=""
Memorize X : Memorize Y : Locate 0,YPOS
For Z=YPOS To 30
Print Mid$(LINE$,(Z+SPOS)*SCR_WIDTH+1,SCR_WIDTH);
Next Z
Remember X : Remember Y : CHARACTER_PRINT
Pop Proc
ALT_DELETE:
ALT$=Mid$(LINE$,(YPOS+SPOS)*SCR_WIDTH+1,SCR_WIDTH)
For Z=YPOS+SPOS To UPPER_LIMIT-1
Mid$(LINE$,Z*SCR_WIDTH+1,SCR_WIDTH)=Mid$(LINE$,(Z+1)*SCR_WIDTH+1,SCR_WIDTH)
Next Z
If UPPER_LIMIT=31
Mid$(LINE$,UPPER_LIMIT*SCR_WIDTH+1,SCR_WIDTH)=Space$(80)
Else
Dec UPPER_LIMIT
End If
Memorize X : Memorize Y : Locate 0,YPOS
For Z=YPOS To 31
Print Mid$(LINE$,(Z+SPOS)*SCR_WIDTH+1,SCR_WIDTH);
Next Z
Remember X : Remember Y : CHARACTER_PRINT
End Proc
Procedure POSITION_WITH_MOUSE
Inverse Off
Locate XPOS,YPOS
CHARACTER_PRINT
XPOS=Int((X Mouse-128)/4)
YPOS=Int((Y Mouse-38)/8)
If YPOS=0
Dec SPOS
If SPOS<0
SPOS=0 : Bell
Else
Scroll 1 : UPPER_LINE_PRINT
End If
End If
YPOS_LTEST : CHECK_CHAR
End Proc
Procedure CHECK_CHAR
If Key Shift<>4 Then Pop Proc
X$=Mid$(LINE$,(YPOS+SPOS)*SCR_WIDTH+1+XPOS,1)
If(Asc(X$)<136 or Asc(X$)>146) : Pop Proc : End If
Z=(YPOS+SPOS)*SCR_WIDTH+XPOS+1
If YPOS+SPOS=0 Then A=0 : Else A=Asc(Mid$(LINE$,Z-SCR_WIDTH,1))
If XPOS=79 Then B=0 : Else B=Asc(Mid$(LINE$,Z+1,1))
If YPOS+SPOS=UPPER_LIMIT Then C=0 : Else C=Asc(Mid$(LINE$,Z+SCR_WIDTH,1))
If XPOS=0 Then D=0 : Else D=Asc(Mid$(LINE$,Z-1,1))
CHECK$=Str$(A+B+C+D)
If Instr(" 0 1 2 4 8",CHECK$)>0 Then Pop Proc
CHAR$=" "+Chr$(140)+" "+Chr$(139)+Chr$(136)+Chr$(144)+" "+Chr$(141)
CHAR$=CHAR$+Chr$(137)+Chr$(143)+Chr$(138)+Chr$(145)+Chr$(142)+Chr$(146)
A=1*(A=137)-1*(A>135) : B=2*(B=139)-2*(B>135)
C=4*(C=137)-4*(C>135) : D=8*(D=139)-8*(D>135)
Mid$(LINE$,Z,1)=Mid$(CHAR$,A+B+C+D+1,1)
End Proc
Procedure POSITION_WITH_UP_ARROW
Inverse Off
Locate XPOS,YPOS
CHARACTER_PRINT
Dec YPOS
If YPOS<0
YPOS=0
Dec SPOS
If SPOS<0
SPOS=0 : Bell
Else
Scroll 1 : UPPER_LINE_PRINT : Locate XPOS,YPOS
End If
End If
End Proc
Procedure POSITION_WITH_DN_ARROW
Inverse Off
Locate XPOS,YPOS
CHARACTER_PRINT
Inc YPOS
YPOS_LTEST
End Proc
Procedure POSITION_WITH_RT_ARROW
Inverse Off
Locate XPOS,YPOS
CHARACTER_PRINT
Inc XPOS
If XPOS>79 : XPOS=79 : Bell : End If
End Proc
Procedure POSITION_WITH_LT_ARROW
Inverse Off
Locate XPOS,YPOS
CHARACTER_PRINT
Dec XPOS
If XPOS<0 : XPOS=0 : Bell : End If
End Proc
Procedure CHARACTER_PRINT
Locate XPOS,YPOS
Print Mid$(LINE$,(YPOS+SPOS)*SCR_WIDTH+XPOS+1,1);
End Proc
Procedure CHR_INP[Q$]
Locate XPOS,YPOS
A=Asc(Mid$(LINE$,(YPOS+SPOS)*SCR_WIDTH+XPOS+1,1))
If(A>135 and A<147) : Bell : Pop Proc : End If
Mid$(LINE$,(YPOS+SPOS)*SCR_WIDTH+XPOS+1,1)=Q$
Inverse Off
Print Q$;
Inc XPOS
If XPOS>79 : XPOS=79 : Bell : End If
Locate XPOS,YPOS
End Proc
Procedure UPPER_LINE_PRINT
Inverse Off
Locate 0,0
Print Mid$(LINE$,(YPOS+SPOS)*SCR_WIDTH+1,SCR_WIDTH);
End Proc
Procedure BASE_LINE_PRINT
Inverse Off
Locate 0,30
Print Mid$(LINE$,(YPOS+SPOS)*SCR_WIDTH+1,SCR_WIDTH);
End Proc
'************************************************ DRAWING PROCEDURES
Procedure CLR_BOX
Inverse Off
CX1=X Text(GX1) : CX2=X Text(GX2)
CY1=Y Text(GY1) : CY2=Y Text(GY2)
If(CX1=CX2) or(CY1=CY2)
ALERT[" ","CAN'T CLEAR SINGLE POINTS !!"," ",0]
Pop Proc
End If
Change Mouse 1
QUERY["ARE YOU SURE",""," YES "," NO "]
If Param=2 : Pop Proc : End If
For Z=CY1 To CY2
Mid$(LINE$,(SPOS+Z)*SCR_WIDTH+CX1+1,CX2-CX1+1)=Space$(CX2-CX1+1)
Mid$(LINE$,(SPOS+Z)*SCR_WIDTH+CX1+1,CX2-CX1+1)=Space$(CX2-CX1+1)
Next Z
Locate 0,0
For Z=0 To 30
Print Mid$(LINE$,(Z+SPOS)*SCR_WIDTH+1,SCR_WIDTH);
Next Z
End Proc
Procedure SET_BOX
Gr Writing 2
CX1=0 : CX2=0
GX1=0 : GY1=0
Repeat
If Mouse Key=1
GX1=X Screen(X Mouse) : GY1=Y Screen(Y Mouse)
GX2=GX1 : GY2=GY1
While Mouse Key=1
Box GX1,GY1 To GX2,GY2
GX2=X Screen(X Mouse) : GY2=Y Screen(Y Mouse)
Box GX1,GY1 To GX2,GY2
Wend
Box GX1,GY1 To GX2,GY2 : GRABBED=True
If GX1>GX2 : Swap GX1,GX2 : End If
If GY1>GY2 : Swap GY1,GY2 : End If
End If
Until GRABBED
Gr Writing 1
End Proc
Procedure SET_LINE
Gr Writing 2
CX1=0 : CX2=0
GX1=0 : GY2=0
Repeat
If Mouse Key=1
GX1=X Screen(X Mouse) : GY1=Y Screen(Y Mouse)
GX2=GX1 : GY2=GY1
While Mouse Key=1
Draw GX1,GY1 To GX2,GY2
GX2=X Screen(X Mouse) : GY2=Y Screen(Y Mouse)
Draw GX1,GY1 To GX2,GY2
Wend
Draw GX1,GY1 To GX2,GY2 : GRABBED=True
If GX1>GX2 : Swap GX1,GX2 : End If
If GY1>GY2 : Swap GY1,GY2 : End If
End If
Until GRABBED
Gr Writing 1
End Proc
Procedure SHAPE_BOX
CX1=X Text(GX1) : If CX1<0 : CX1=0 : End If
CX2=X Text(GX2) : If CX2>79 : CX2=79 : End If
CY1=Y Text(GY1) : If CY1<0 : CY=0 : End If
CY2=Y Text(GY2) : If CY2>30 : CY2=30 : End If
If(CX1=CX2) or(CY1=CY2)
ALERT[" ","CAN'T DRAW SINGLE POINTS !!"," ",0]
Pop Proc
End If
If(CX2-CX1)>1
For Z=CX1+1 To CX2-1
Mid$(LINE$,(SPOS+CY1)*SCR_WIDTH+Z+1,1)=Chr$(137)
Mid$(LINE$,(SPOS+CY2)*SCR_WIDTH+Z+1,1)=Chr$(137)
Next Z
End If
If(CY2-CY1)>1
For Z=CY1+1 To CY2-1
Mid$(LINE$,(SPOS+Z)*SCR_WIDTH+CX1+1,1)=Chr$(139)
Mid$(LINE$,(SPOS+Z)*SCR_WIDTH+CX2+1,1)=Chr$(139)
Next Z
End If
CHECK_TL : Mid$(LINE$,(SPOS+CY1)*SCR_WIDTH+CX1+1,1)=Mid$(TLC$,Param,1)
CHECK_TR : Mid$(LINE$,(SPOS+CY1)*SCR_WIDTH+CX2+1,1)=Mid$(TRC$,Param,1)
CHECK_BL : Mid$(LINE$,(SPOS+CY2)*SCR_WIDTH+CX1+1,1)=Mid$(BLC$,Param,1)
CHECK_BR : Mid$(LINE$,(SPOS+CY2)*SCR_WIDTH+CX2+1,1)=Mid$(BRC$,Param,1)
For Z=0 To 30
Locate 0,Z
Print Mid$(LINE$,(SPOS+Z)*SCR_WIDTH+1,SCR_WIDTH);
Next Z
End Proc
Procedure CHECK_TL
A=0 : B=0 : C=0 : D=0
If(CY1=0 and SPOS=0) : A=0 : Else A=Asc(Mid$(LINE$,(CY1-1+SPOS)*SCR_WIDTH+CX1+1,1)) : End If
B=Asc(Mid$(LINE$,(CY1+SPOS)*SCR_WIDTH+CX1+2,1))
C=Asc(Mid$(LINE$,(CY1+1+SPOS)*SCR_WIDTH+CX1+1,1))
If CX1=0 : D=0 : Else D=Asc(Mid$(LINE$,(CY1+SPOS)*SCR_WIDTH+CX1,1)) : End If
If(CX1=0 and CY1=0 and SPOS=0) : A=0 : D=0 : End If
A=-1*(A=139) : B=-2*(B=137) : C=-4*(C=139) : D=-8*(D=137)
End Proc[A+B+C+D]
Procedure CHECK_TR
A=0 : B=0 : C=0 : D=0
If(CY1=0 and SPOS=0) : A=0 : Else A=Asc(Mid$(LINE$,(CY1-1+SPOS)*SCR_WIDTH+CX2+1,1)) : End If
If CX2=79 : B=0 : Else B=Asc(Mid$(LINE$,(CY1+SPOS)*SCR_WIDTH+CX2+2,1)) : End If
C=Asc(Mid$(LINE$,(CY1+1+SPOS)*SCR_WIDTH+CX2+1,1))
D=Asc(Mid$(LINE$,(CY1+SPOS)*SCR_WIDTH+CX2,1))
A=-1*(A=139) : B=-2*(B=137) : C=-4*(C=139) : D=-8*(D=137)
End Proc[A+B+C+D]
Procedure CHECK_BL
A=0 : B=0 : C=0 : D=0
If CY2+SPOS=UPPER_LIMIT : C=0 : Else C=Asc(Mid$(LINE$,(CY2+1+SPOS)*SCR_WIDTH+CX1+1,1)) : End If
If CX1=0 : D=0 : Else D=Asc(Mid$(LINE$,(CY2+SPOS)*SCR_WIDTH+CX1,1)) : End If
If(CX1=0 and CY2+SPOS=UPPER_LIMIT) : C=0 : D=0 : End If
A=Asc(Mid$(LINE$,(CY2-1+SPOS)*SCR_WIDTH+CX1+1,1))
B=Asc(Mid$(LINE$,(CY2+SPOS)*SCR_WIDTH+2+CX1,1))
A=-1*(A=139) : B=-2*(B=137) : C=-4*(C=139) : D=-8*(D=137)
End Proc[A+B+C+D]
Procedure CHECK_BR
A=0 : B=0 : C=0 : D=0
If CX2=79 : B=0 : Else B=Asc(Mid$(LINE$,(CY2+SPOS)*SCR_WIDTH+CX2+2,1)) : End If
If CY2+SPOS=UPPER_LIMIT : C=0 : Else C=Asc(Mid$(LINE$,(CY2+1+SPOS)*SCR_WIDTH+CX2+1,1)) : End If
If(CX2=79 and CY2+SPOS=UPPER_LIMIT) : B=0 : C=0 : End If
A=Asc(Mid$(LINE$,(CY2-1+SPOS)*SCR_WIDTH+CX2+1,1))
D=Asc(Mid$(LINE$,(CY2+SPOS)*SCR_WIDTH+CX2,1))
A=-1*(A=139) : B=-2*(B=137) : C=-4*(C=139) : D=-8*(D=137)
End Proc[A+B+C+D]
Procedure SHAPE_LINE
CX1=X Text(GX1) : If CX1<0 : CX1=0 : End If
CX2=X Text(GX2) : If CX2>79 : CX2=79 : End If
CY1=Y Text(GY1) : If CY1<0 : CY1=0 : End If
CY2=Y Text(GY2) : If CY2>30 : CY2=30 : End If
If(CX2-CX1)>4 : Goto HORIZ_LINE : End If
If(CY2-CY1)>1 : Goto VERT_LINE : End If
MISTAKE:
ALERT["","CAN'T DRAW ANGLED LINES","",0]
Pop Proc
HORIZ_LINE:
If(CY2-CY1)>1 : Goto MISTAKE : End If
Mid$(LINE$,(SPOS+CY1)*SCR_WIDTH+CX1+1,1)=Chr$(137)
Mid$(LINE$,(SPOS+CY1)*SCR_WIDTH+CX2+1,1)=Chr$(137)
For Z=CX1+1 To CX2-1
Mid$(LINE$,(SPOS+CY1)*SCR_WIDTH+Z+1,1)=Chr$(137)
Next Z
Goto PRT_A_LINE
VERT_LINE:
If(CX2-CX1)>4 Then Goto MISTAKE
For Z=CY1 To CY2
Mid$(LINE$,(SPOS+Z)*SCR_WIDTH+CX1+1,1)=Chr$(139)
Next Z
PRT_A_LINE:
For Z=0 To 30
Locate 0,Z
Print Mid$(LINE$,(SPOS+Z)*SCR_WIDTH+1,SCR_WIDTH);
Next Z
End Proc
Procedure JUSTIFY_LINE[A$,ANSW]
ML=0 : FIND_MOVES_LEFT : ML=Param
MR=0 : FIND_MOVES_RIGHT : MR=Param
If ANSW=4 Then Goto OK_RIGHT
If ANSW=3 Then Goto OK_CENTRE
If ANSW<>2 Then Pop Proc
Mid$(LINE$,(YPOS+SPOS)*SCR_WIDTH+CX1+1-ML,Len(A$)+ML)=A$+Space$(ML)
Locate 0,YPOS : Inverse Off
Print Mid$(LINE$,(YPOS+SPOS)*SCR_WIDTH+1,SCR_WIDTH);
Pop Proc
OK_RIGHT:
Mid$(LINE$,(YPOS+SPOS)*SCR_WIDTH+CX1+1,Len(A$)+MR)=Space$(MR)+A$
Locate 0,YPOS : Inverse Off
Print Mid$(LINE$,(YPOS+SPOS)*SCR_WIDTH+1,SCR_WIDTH);
Pop Proc
OK_CENTRE:
MC=(Int(ML+MR)/2)
Mid$(LINE$,(YPOS+SPOS)*SCR_WIDTH+CX1+1-ML,ML+Len(A$)+MR)=Space$(MC)+A$+Space$(MC+2)
Locate 0,YPOS : Inverse Off
Print Mid$(LINE$,(YPOS+SPOS)*SCR_WIDTH+1,SCR_WIDTH);
End Proc
Procedure FIND_MOVES_LEFT
For Z=CX1 To 1 Step -1
X=Asc(Mid$(LINE$,(YPOS+SPOS)*SCR_WIDTH+Z,1))
Exit If(X>135 and X<147),1
Next Z
End Proc[CX1-Z]
Procedure FIND_MOVES_RIGHT
For Z=CX2 To 80
X=Asc(Mid$(LINE$,(YPOS+SPOS)*SCR_WIDTH+Z+1,1))
If(X>135 and X<147) : Inc Z : Exit : End If
Next Z
End Proc[Z-CX2-2]
'************************************************ Main Menu Options
Procedure CH_OPT
ITEM=Choice(2)
On ITEM Proc OPT_NEW,OPT_ABOUT,OPT_QUIT
On Menu On
End Proc
Procedure CH_FLE
ITEM=Choice(2)
On ITEM Proc FLE_LOAD,FLE_SAVE,FLE_SAVEAS,FLE_MKDIR,FLE_DIR,FLE_KILL,FLE_RENAME
On Menu On
End Proc
Procedure CH_INP
CHANGE_FLAG=True : ITEM=Choice(2)
On ITEM Proc INP_BOX,INP_LINE,INP_CLEAR,INP_JUSTIFY,INP_LENGTH
On Menu On
End Proc
Procedure CH_PRT
ITEM=Choice(2)
On ITEM Proc PRT_PRINT,PRT_CH_PRINTER
On Menu On
End Proc
'************************************************ Menu 1 Options
Procedure OPT_NEW
Inverse Off
QUERY["THIS WILL CLEAR ALL MEMORY","----- CONTINUE -----"," OK "," NO "]
If Param<>1 Then Pop Proc
Cls : Locate XPOS,YPOS : Inverse Off : Print " ";
FILENAME$="noname"
REDO_PARAMETERS
LINE$=Space$(UPPER_LIMIT*SCR_WIDTH)
XPOS=0 : YPOS=0 : Locate XPOS,YPOS
End Proc
Procedure OPT_ABOUT
A$="Howard Meek"
B$="247 Lichfield Road, Rushall,"
C$="Walsall. WS4 1EA"
ALERT[A$,B$,C$,0]
End Proc
Procedure OPT_QUIT
Inverse Off
If Left$(FILENAME$,6)="noname" Then CHANGE_FLAG=0
If CHANGE_FLAG Then QUERY["Save "+FILENAME$+" before Quitting",""," yes "," no "]
If(Param=1 and CHANGE_FLAG) Then FLE_SAVE
QUERY["DO YOU REALLY WANT TO END IT ALL ?"," "," YYUP "," NOPE "]
If Param<>1 Then Pop Proc
Edit
End Proc
'************************************************ Menu 2 Options
Procedure FLE_LOAD
LFILE:
F$=Fsel$("*.fru","","FORMS REALLY UNLIMITED","Load a FORM")
If F$="" Then Pop Proc
If Mid$(F$,Instr(F$,"/")+1,1)="*"
ALERT["You Cannot LOAD a Pattern","","Please Enter a Filename !!",-1]
Goto LFILE
End If
If Lower$(Right$(F$,4))<>".fru" : F$=F$+".fru" : End If
If Not Exist(F$)
ALERT[F$+" does NOT exist in the Current Directory","","Please try again",-1]
Goto LFILE
End If
FILENAME$=F$ : GIVE_LINE_STATUS
INFO_ON["Loading "+FILENAME$,"Please Wait"]
On Menu Off : Change Mouse 3
Open In 1,FILENAME$
Input #1,UPPER_LIMIT
LINE$=Space$(UPPER_LIMIT*SCR_WIDTH) : A$=""
For Z=0 To UPPER_LIMIT-1
Exit If Eof(1),1
A$=Input$(1,SCR_WIDTH) : X$=Input$(1,2)
Mid$(LINE$,Z*SCR_WIDTH+1,SCR_WIDTH)=A$
Next Z
Close 1 : INFO_OFF : Inverse Off : Cls
For Z=0 To 30
Print Mid$(LINE$,Z*SCR_WIDTH+1,SCR_WIDTH);
Next Z
Change Mouse 1 : Menu On : On Menu On
CHANGE_FLAG=False : Locate 0,0
End Proc
Procedure FLE_SAVE
If Right$(FILENAME$,6)="noname"
FLE_SAVEAS
Pop Proc
End If
INFO_ON["Saving "+FILENAME$,"Please Wait"]
On Menu Off : Change Mouse 3
Open Out 1,FILENAME$
Print #1,UPPER_LIMIT
For Z=0 To UPPER_LIMIT-1
Print #1,Mid$(LINE$,Z*SCR_WIDTH+1,SCR_WIDTH)
Next Z
Close 1
INFO_OFF : Menu On : On Menu On
Change Mouse 1 : CHANGE_FLAG=0
End Proc
Procedure FLE_SAVEAS
If CHANGE_FLAG=False Then Pop Proc
SFILE:
F$=Fsel$("*.fru","","FORMS REALLY UNLIMITED","Save a FORM")
If F$="" Then Pop Proc
If Mid$(F$,Instr(F$,"/")+1,1)="*"
ALERT["You Cannot SAVE a Pattern","","Please Enter a Filename !!",-1]
Goto SFILE
End If
If Lower$(Right$(F$,4))<>".fru" : F$=F$+".fru" : End If
FILENAME$=F$
INFO_ON["Saving "+FILENAME$,"Please Wait"]
On Menu Off : Change Mouse 3
Open Out 1,FILENAME$
Print #1,UPPER_LIMIT
For Z=0 To UPPER_LIMIT-1
Print #1,Mid$(LINE$,Z*SCR_WIDTH+1,SCR_WIDTH)
Next Z
Close 1
INFO_OFF : Menu On : On Menu On
Change Mouse 1 : CHANGE_FLAG=0
End Proc
Procedure FLE_MKDIR
X=Instr(Dir$,":") : D$=Upper$(Left$(Dir$,4))
Inverse Off : Screen 1 : Flash 4,"(0f0,20)(044,20)"
Wind Save : Wind Open 6,160,100,40,14,1 : Wind Save
Border 2,5,7 : Pen 6 : Paper 5 : Clw
NWDIR:
Clw : Curs On : Locate 2,1 : Print "Current Drive :- ";D$
Locate 2,3 : Print "Enter FULL NAME from Root"
Locate 6,5 : Print "Input Space to exit"
Locate 2,8 : Put Key D$ : Input TEMP$;
If Right$(TEMP$,1)=" " Then Wind Close : Pop Proc
If TEMP$="" Then Goto NWDIR
X=Instr(TEMP$,":") : If X>5 Then Goto NWDIR
If X>0
D$=Upper$(Left$(TEMP$,X))
TEMP$=Right$(TEMP$,Len(TEMP$)-X)
End If
CHECK$=D$+TEMP$
If Exist(CHECK$)
ALERT[CHECK$,"","Already exists !!!",-1]
Goto NWDIR
End If
CONFIRM_QUERY[" yes "," quit "," no ",CHECK$]
If Param=3 Then Goto NWDIR
If Param<>1 Then Wind Close : Pop Proc
Mkdir CHECK$ : Dir$=CHECK$
Wind Close : Curs Off : Flash Off
FLE_DIR
End Proc
Procedure FLE_DIR
CONFIRM_QUERY[" Yes "," Quit "," No ",Dir$+" :- Current Directory"]
If Param=2 Then Pop Proc
If Param=1 Then Goto CONT_DIR
If Param<>3 Then Pop Proc
Screen 1 : Wind Save : Wind Open 7,130,10,46,6,1 : Wind Save
Border 2,5,7 : Pen 6 : Paper 5
MISTAKE_DIR:
Clw : Curs On : Centre "Change Directory to :-"
Locate 2,2 : Put Key "DF0:" : Input TEMP$;
X=Instr(TEMP$,":") : If X>4 Then Goto MISTAKE_DIR
If X=0 Then TEMP$="DF0:"+TEMP$
If Not Exist(TEMP$) Then Goto MISTAKE_DIR
Dir$=TEMP$ : Wind Close
CONT_DIR:
Screen 1 : Wind Save : Wind Open 7,30,10,74,28,1 : Wind Save
Curs Off : Border 2,2,1 : Pen 6 : Paper 2 : Clw : Dir Dir$
Pen 7 : Print : Print At(0,)+"Free Disc Space :-"+Str$(Dfree)+" bytes."
Pen 3 : Print : Print At(20,)+"-- Press a Mouse Key --";
While Mouse Key : Wend
Repeat : Until Mouse Key
Wind Close
End Proc
Procedure FLE_KILL
KFILE:
F$=Fsel$("*.fru","","Purge a file from Disc","YOU CANNOT RECOVER PURGED FILES")
If F$="" Then Pop Proc
If Left$(F$,1)="*"
ALERT["Pattern NOT acceptable","","Please try again !!",-1]
Goto KFILE
End If
If Right$(F$,4)<>".fru"
ALERT["To protect ALL OTHER files - only","FORMS REALLY UNLIMITED","files may be PURGED",-1]
Goto KFILE
End If
PURGENAME$=F$
If Not Exist(PURGENAME$)
ALERT[PURGENAME$+" does NOT exist","","Please try again",-1]
Goto KFILE
End If
QUERY["","ARE YOU SURE ??"," NO "," YES "]
If Param<>2 Then Pop Proc
INFO_ON["Purging :- "+PURGENAME$,""]
Change Mouse 3
Kill PURGENAME$
Change Mouse 1
INFO_OFF
End Proc
Procedure FLE_RENAME
RFILE:
F$=Fsel$("*.*","","FORMS REALLY UNLIMITED","RENAME a FILE")
If F$="" Then Pop Proc
If Instr(F$,"*")>0
ALERT["YOU CANNOT RENAME A PATTERN","","Please enter a Filename !!",-1]
Goto RFILE
End If
If Not Exist(F$) Then Goto RFILE
Wind Save : Wind Open 6,140,100,50,10,1 : Wind Save
Border 1,5,7 : Paper 5 : Pen 6 : Clw
Print : Centre "RENAME A FILE" : Print : Print
Print " Change :- ";F$ : Print
CX=Instr(F$,".") : C$=Left$(F$,CX-1)
Put Key C$+".bak" : Input " To :- ";C$
If C$="" Then Wind Close : Pop Proc
Rename F$ To C$
Wind Close
End Proc
'************************************************ Menu 3 Options
Procedure INP_BOX
Change Mouse 2
Inverse Off
CHARACTER_PRINT
While Mouse Key : Wend
MEN=0 : ITEM=0 : CH=2
While(MEN=0 and ITEM=0 and CH=2)
SET_BOX
SHAPE_BOX
MEN=Choice(1)
ITEM=Choice(2)
CH=Mouse Click
Wend
Change Mouse 1
Inverse On
CHARACTER_PRINT
End Proc
Procedure INP_LINE
Change Mouse 2
Inverse Off
CHARACTER_PRINT
While Mouse Key : Wend
MEN=0 : ITEM=0 : CH=2
While(MEN=0 and ITEM=0 and CH=2)
SET_LINE
SHAPE_LINE
MEN=Choice(1)
ITEM=Choice(2)
CH=Mouse Click
Wend
Change Mouse 1
Inverse On
CHARACTER_PRINT
End Proc
Procedure INP_LENGTH
REDO_PARAMETERS
If(YPOS+SPOS)>UPPER_LIMIT
YPOS=0 : SPOS=0
Cls : Inverse Off
For Z=0 To 30
Print Mid$(LINE$,Z*SCR_WIDTH+1,SCR_WIDTH);
Next Z
End If
End Proc
Procedure INP_CLEAR
QUERY["Clear an area of this FORM ?"," "," Yes Please "," No Thanks "]
If Param<>1 Then Pop Proc
Change Mouse 2
Inverse Off
CHARACTER_PRINT
While Mouse Key : Wend
MEN=0 : ITEM=0 : CH=2
While MEN=0 and ITEM=0
SET_BOX
CLR_BOX
MEN=Choice(1)
ITEM=Choice(2)
Wend
Inverse On
Change Mouse 1
End Proc
Procedure INP_JUSTIFY
Locate 1,31 : Inverse On : Print Space$(78); : Inverse Off
Locate 15,31 : Print " Highlight the Line of Text to be Justified ";
CHARACTER_PRINT
CONT_JUST:
While Mouse Key : Wend
MEN=0 : ITEM=0 : CH=2
While MEN=0 and ITEM=0
CX1=0 : CX2=0
Repeat
If Mouse Key=1
CX1=X Text(X Screen(X Mouse))
If CX1<0 : CX1=0 : End If
If CX1>79 : CX1=79 : End If
CY1=Y Text(Y Screen(Y Mouse))
If CY1<0 : CY1=0 : End If
If CY1>SCR_LIMIT : CY1=SCR_LIMIT : End If
CX2=CX1
Inverse On
Locate CX1,CY1
Print Mid$(LINE$,(CY1+SPOS)*SCR_WIDTH+CX1+1,1);
Inverse On
While Mouse Key=1
Locate CX2,CY1 : Inverse On
Print Mid$(LINE$,(CY1+SPOS)*SCR_WIDTH+CX2+1,1);
CX2=X Text(X Screen(X Mouse))
If CX2<0 : CX2=0 : End If
If CX2>79 : CX2=79 : End If
Locate CX2,CY1
Print Mid$(LINE$,(CY1+SPOS)*SCR_WIDTH+CX2+1,1);
If(CX2<79 and CX2>CX1)
Locate CX2+1,CY1 : Inverse Off
Print Mid$(LINE$,(CY1+SPOS)*SCR_WIDTH+CX2+2,1);
End If
Wend
GRABBED=True
Inverse Off
If CX1>CX2 : Swap CX1,CX2 : End If
End If
Until GRABBED
XPOS=CX1 : YPOS=CY1
Locate XPOS,YPOS
Inverse On
A$=Mid$(LINE$,(CY1+SPOS)*SCR_WIDTH+CX1+1,CX2-CX1+1)
Print A$;
Inverse Off : PART=False
For Z=1 To Len(A$)
X=Asc(Mid$(A$,Z,1))
If(X>135 and X<147) : PART=True : End If
Next Z
If PART
ALERT["CANNOT JUSTIFY BOXES","","or even parts of Boxes",-1]
Locate XPOS,YPOS : Print A$;
Pop Proc
End If
CONFIRM_QUERY["Left","Centre","Right","JUSTIFY TEXT"]
ANSW=Param+1 : JUSTIFY_LINE[A$,ANSW]
MEN=Choice(1) : ITEM=Choice(2)
Wend
Inverse On
CHARACTER_PRINT
End Proc
'************************************************ Menu 4 Options
Procedure PRT_PRINT
Dim PRT$(10)
Inverse Off
If Not Exist(":Param.fle")
INFO_ON["Printer Data File does not exist","Please set up as follows :-"]
For Z=0 To 32000 : Next Z
INFO_OFF
PRT_CH_PRINTER
End If
PX=0
Open In 1,":Param.fle"
While Not Eof(1)
Input #1,PRT$(PX)
Inc PX
Wend
Close 1
INFO_ON["PRINTING IN PROGRESS","Press <Alt-Q> to Quit Printing"]
Change Mouse 3
Open Port 9,PRT$(3)
Print #9,Chr$(27);PRT$(4);
Print #9,Chr$(27);PRT$(6);
Print #9,Chr$(27);Left$(PRT$(5),1);Chr$(Val(Right$(PRT$(5),1)));
Print #9,Chr$(27);"A";Chr$(6);
For Z=0 To UPPER_LIMIT-1
TRAP_LINE[Mid$(LINE$,Z*SCR_WIDTH+1,SCR_WIDTH)]
K$=Inkey$
Exit If Key State(Key Shift)
Next Z
Close 9
Clear Key : While Key State(Key Shift) : K$=Inkey$ : Wend
Clear Key : INFO_OFF : Change Mouse 1
End Proc
Procedure TRAP_LINE[Q$]
Dim CH$(11),POS(80)
For Z=0 To 11 : For X=1 To 6 : Read A : CH$(Z)=CH$(Z)+Chr$(A) : Next X : Next Z
A=0 : B=0 : C=0 : D=0
E$="" : F$="" : G$=""
Repeat
Inc B
E$=Mid$(Q$,B,1)
C=Asc(E$)
If(C=136 or C=138 or C=139 or C=142 or C=144 or C=145 or C=146) Then POS(B)=1
If(C>135 and C<147)
D=D+6
G$=G$+CH$(C-135)
Else
If D>0
F$=F$+Chr$(27)+"K"+Chr$(D mod 256)+Chr$(Int(D/256))+G$+E$
D=0
G$=""
Else
F$=F$+E$
End If
End If
Until B=Len(Q$)
If D>0 Then F$=F$+Chr$(27)+"K"+Chr$(D mod 256)+Chr$(Int(D/256))+G$
E$=Chr$(27)+"K"+Chr$(224)+Chr$(1)
For Z=1 To 80
If POS(Z)=1
E$=E$+CH$(4)
Else
E$=E$+CH$(0)
End If
Next Z
Print #9,F$
Print #9,E$
Data 0,0,0,0,0,0
Data 0,0,15,31,24,24
Data 24,24,24,24,24,24
Data 24,24,31,15,0,0
Data 0,0,255,255,0,0
Data 0,0,240,248,24,24
Data 24,24,248,240,0,0
Data 24,24,31,31,24,24
Data 24,24,248,248,24,24
Data 0,0,255,255,24,24
Data 24,24,255,255,0,0
Data 24,24,255,255,24,24
End Proc
Procedure PRT_CH_PRINTER
Dim A$(10) : PX=0
If Not Exist(":Param.fle") Then Goto TERM
Open In 1,":Param.fle"
While Not Eof(1)
Input #1,A$(PX)
Inc PX
Wend
Close 1
TERM:
Screen 1 : Wind Save : Wind Open 8,30,10,74,26,1 : Wind Save
Border 2,5,7 : Pen 6 : Paper 5
B$="FORMS REALLY UNLIMITED - "+VERSION$ : C$=String$("=",Len(B$))
WRONGDIR:
Clw : Centre B$ : Print : Centre C$ : Print : Print
Print "MAIN PARAMETERS SETUP :-"
Locate 5,6 : Print "Primary Drive : ";A$(0)
Locate 34,6 : Print "Primary Folder : ";A$(1)
Put Key A$(0)
Locate 19,6 : Input TEMP$;
If TEMP$="" Then Goto FOLDER
If Right$(TEMP$,1)<>":" Then TEMP$=TEMP$+":"
If Len(TEMP$)<>4 Then Goto WRONGDIR
If Not Exist(TEMP$) Then Goto WRONGDIR
A$(0)=TEMP$
FOLDER:
Put Key A$(1)
Locate 49,6 : Input TEMP$;
If Not Exist(A$(0)+TEMP$) Then Goto FOLDER
A$(1)=TEMP$
Dir$=A$(0)+A$(1)
Put Key A$(2)
Locate 5,9 : Print "Printer Type : ";
Locate 18,9 : Input TEMP$;
If TEMP$<>"" Then A$(2)=TEMP$
Locate 0,12 : Print "SPECIAL CONTROL CODES :- Character(s) ONLY" : Print
Print "PARallel or SERial Connection :- " : Print
Print "Reset/Initialise Printer .... :- " : Print
Print "Language Character Set ...... :- " : Print
Print "Set Line Feed to 7/72 inch .. :- "
Put Key A$(3) : Locate 34,14 : Input TEMP$;
If TEMP$<>"" Then A$(3)=TEMP$
Put Key A$(4) : Locate 34,16 : Input TEMP$;
If TEMP$<>"" Then A$(4)=TEMP$
Put Key A$(5) : Locate 34,18 : Input TEMP$;
If TEMP$<>"" Then A$(5)=TEMP$
Put Key A$(6) : Locate 34,20 : Input TEMP$;
If TEMP$<>"" Then A$(6)=TEMP$
Print : Print : Print At(20,)+"-- Press a Mouse Key --";
Open Out 1,":Param.fle"
For Z=0 To 6 : Print #1,A$(Z) : Next Z
Close 1
While Mouse Key : Wend
Repeat : Until Mouse Key
Wind Close
End Proc
'************************************************ End of Program